package com.smartfarm.domain.equipment;

import com.smartfarm.domain.environment.EnvironmentData;
import com.smartfarm.domain.state.EquipmentState;
import com.smartfarm.domain.strategy.PathPlanningStrategy;

/**构建器模式
 * 通过 Lombok 的 @Builder 注解自动生成构建器，
 * 简化 EquipmentStatus、EnvironmentData、Task 等类的对象创建。
 * 农业设备接口
 */
public interface AgriculturalEquipment {
    String getId();
    String getName();
    void setState(EquipmentState state);
    EquipmentState getState();
    void setPathStrategy(PathPlanningStrategy strategy);
    PathPlanningStrategy getPathStrategy();
    void updateEnvironmentData(EnvironmentData data);
    void stop();

    /**
     * 启动设备引擎
     */
    default void startEngine() {
        System.out.println(getName() + "引擎已启动");
    }

    /**
     * 停止设备引擎
     */
    default void stopEngine() {
        System.out.println(getName() + "引擎已停止");
        stop();
    }

    default void registerEquipment() {
        System.out.println("已注册设备：" + getName());
    }
    default void changeStrategy(PathPlanningStrategy strategy) {
        System.out.println(getName() + "已切换路径规划策略为：" + strategy.getClass().getSimpleName());
    }
} 